package intf

import (
	"gitee.com/ljfirst/algo-go-sdk/src/algorithm/comprehensive/lis"
	"gitee.com/ljfirst/algo-go-sdk/src/algorithm/comprehensive/lms"
	"gitee.com/ljfirst/algo-go-sdk/src/algorithm/comprehensive/lns"
	"gitee.com/ljfirst/algo-go-sdk/src/algorithm/comprehensive/lsg"
	"gitee.com/ljfirst/algo-go-sdk/src/algorithm/comprehensive/lss"
	"gitee.com/ljfirst/algo-go-sdk/src/algorithm/dynamic/lcs"
)

/**
 * @author ljfirst
 * @version V1.0
 * @date 2023/7/10 00:03
 * @author-Email ljfirst@mail.ustc.edu.cn
 * @blogURL https://blog.csdn.net/ljfirst
 * @description
 * */
type LISINTF interface {
	LISMethod(str string) int
}

type LCSINTF interface {
	LCSMethods(str string) int
}

type LNSINTF interface {
	LNSMethods(str string) int
}

type LMSINTF interface {
	LMSMethods(str string) int
}

type LMGINTF interface {
	LMGMethods(str string) int
}

type LSGINTF interface {
	LSGMethods(str string) int
}

type LSSINTF interface {
	LSSMethods(str string) int
}

var DynamicAssemble = map[string][]interface{}{
	"LIS": {
		lis.LIS_Backtrack{},
		lis.LIS_Bisection{},
		lis.LIS_Dynamic{},
		lis.LIS_LCS{},
		lis.LIS_Poker{},
		lis.LIS_TwoPoint{},
		lis.LIS_Violence{},
	},
	"LCS": {
		&lcs.LCS_Dynamic{},
		&lcs.LCS_Optimize{},
	},
	"LMS": {lms.LMS_Dynamic{}},
	"LNS": {lns.LNS_Queue{}},
	"LSG": {
		lsg.LSG_BackTrack{},
		lsg.LSG_Dynamic{},
	},
	"LSS": {
		lss.LSS_Bisection{},
		lss.LSS_Dynamic{}},
}
